(function (mui, $) {
var page = window.page = {};

var _Data = {'token':app.store('token')}, cache = {'addr':{}, 'express':{}, 'voucher':{}, 'products':[]};

mui.plusReady(function () {

	var eid = app.getQueryString('eid');
	var ename = app.getQueryString('ename');
	if (eid && ename) {
		page.onExpressProvided({ id: eid, name: decodeURI(ename)});
	}

	var vid = app.getQueryString('vid');
	var vname = app.getQueryString('vname');
	if (vid && vname) {
		page.onVoucherProvided({ id: vid, name: decodeURI(vname)});
	}

	var view = plus.webview.currentWebview();
	
	if (!app.store('member')) {
		app.toast('登录后才能结算!');
		app.open('member.login.html');
		setTimeout(function () { view.close(); }, 500);
		return;
	}

	delete view.extras.eid;
	delete view.extras.ename;
	delete view.extras.vid;
	delete view.extras.vname;
	
	mui.extend(_Data, view.extras);
	
	app.log('结算请求：', {'token':app.store('token'), 'data':_Data});
	plus.nativeUI.showWaiting();
	$.ajax({
		'dataType' : 'json',
		'type'     : 'post',
		'url'      : app.url('App/Order/Index/comfirm'),
		'data'     : {'token':app.store('token'), 'data':_Data}
	})
	.fail(function (res) {
		plus.nativeUI.closeWaiting();
		app.log('取得结算商品数据失败：', res);
		app.toast('取得结算商品数据失败');
	})
	.done(function (res) {
		plus.nativeUI.closeWaiting();
		app.log('结算商品：', res);
		
		if (500 == res.code) { app.toast('你还未登录'); return; }
		if (300 == res.code) { app.toast(res.msg); return; }
		if (200 != res.code) { app.toast('请求失败'); return; }
		if (res.msg) { app.toast(res.msg); }
		
		cache.products = res.data.goods_info;
		
		// 订单数据没有问题，可以继续提交
		$('.btn-submit').prop('disabled', false);
		// 商品列表
		$('.product-data').html(app.tpl('tpl-product', res));
		// 收货地址
		page.onAddressProvided(res.data.address);
	})
	;
});
// 去选择快递方式
$('.btn-go-logistical').on('tap', function () {
	app.open('express.provider.html');
});
page.onExpressProvided = function (data) {
	if (data) {
		doRefreshExpressFee();
		cache.express = data;
		$('.logistical_name').text(data.name);
	}
};
// 去选择优惠卷
$('.btn-go-voucher').on('tap', function () {
	var products = [];
	for (var i in cache.products) {
		products.push(cache.products[i].goods_id);
	}
	app.open('checkout.voucher.html', {'products':products.join(',')});
});
page.onVoucherProvided = function (voucher) {
	if (voucher) {
		cache.voucher = voucher;
		app.log('优惠卷：', voucher);
		doRefreshExpressFee();
		$('.voucher-name').text(voucher.name);
	}
};
// 去收货地址页面
$('.btn-go-addr').on('tap', function () {
	app.open('member.address.html');
});
page.onAddressProvided = function (addr) {
	if (addr) {
		cache.addr = addr;
		doRefreshExpressFee();
		$('.addr_name').text(addr.recipient + ' ' + addr.mobile);
		$('.addr_detail').text(addr.province_name + ' ' + addr.city_name + ' ' + addr.county_name + ' ' + addr.address);
	}
};

// 计算物流费用
function doRefreshExpressFee () {
	var data = {
		// 收货地址信息
		'addr_id'     : cache.addr.id,
		'province_id' : cache.addr.province,
		'city_id'     : cache.addr.city,
		'county_id'   : cache.addr.county,
		// 优惠卷信息
		'volume_id'   : cache.voucher.id,
		// 快递方式
		'express_id'  : cache.express.id,
		// 商品信息
		'goods'       : [],
	};
	for (var i in cache.products) {
		data.goods.push({
			// 商品信息
			goods_id    : cache.products[i].goods_id,
			goods_num   : cache.products[i].goods_num,
		});
	}
	
	app.log('计算运费：', {'token':app.store('token'), 'data':data});
	//plus.nativeUI.showWaiting();
	$.ajax({
		'dataType' : 'json',
		'type'     : 'post',
		'url'      : app.url('App/Order/Index/calcFreight'),
		'data'     : {'token':app.store('token'), 'data':data}
	})
	.fail(function (res) {
		//plus.nativeUI.closeWaiting();
		app.log('计算物流费用失败：', res);
		app.toast('计算物流费用失败');
	})
	.done(function (res) {
		//plus.nativeUI.closeWaiting();
		app.log('运费费用：', res);
		
		if (500 == res.code) { app.toast('你还未登录'); return; }
		if (300 == res.code) { app.toast(res.msg); return; }
		if (200 != res.code) { app.toast('请求失败'); return; }
		if (res.msg) { app.toast(res.msg); }
		
		var total = 0;
		// 运费
		total += res.data.total;
		// 优惠卷
		total -= res.data.volume;
		// 商品总价
		for (var i in cache.products) {
			total += parseInt(cache.products[i].goods_price, 10) * parseInt(cache.products[i].goods_num, 10)
		}
		
		$('.text-total-fee').text('￥' + (total / 100));
		$('.express-fee').text(' (含运费￥' + (res.data.total/100)+')');
	})
	;
}

$('.btn-submit').on('tap', function () {
	var dom = this, view = plus.webview.currentWebview();
	var data = {
		// 分销邀请码
		'invitation'   : view.extras.invitation,
		// 快递信息
		'express_id'   : cache.express.id,//快递公司ID
		'express_name' : cache.express.name,//快递公司名称
		// 优惠卷信息
		'volume_id'    : cache.voucher.id,
		// 收货地址信息
		'addr_id'      : cache.addr.id,//收货地址ID
		// 计算运费
		'province_id'  : cache.addr.province,
		'city_id'      : cache.addr.city,
		'county_id'    : cache.addr.county,
		// 商品信息
		'goods_info'   : [],
    };
	for (var i in cache.products) {
		data.goods_info.push({
			'goods_id'           : cache.products[i].goods_id,
			'nums'               : cache.products[i].goods_num,
			'goods_attr_val_ids' : cache.products[i].goods_attr_val_ids,
			'message'            : '用户留言',
			'invitation'         : cache.products[i].invitation,
		});
	}
	if (!cache.express) { alert('请选择物流方式'); return; }
	if (!cache.addr)    { alert('请选择收货地址'); return; }
	
	app.log('提交订单：', data);
	plus.nativeUI.showWaiting('正在提交...');
	$(dom).prop('disabled', true);
	$.ajax({
		'dataType' : 'json',
		'type'     : 'post',
		'url'      : app.url('App/Order/Index/create'),
		'data'     : {'token':app.store('token'), 'data':data}
	})
	.fail(function (res) {
		plus.nativeUI.closeWaiting();
		app.log('提交订单失败：', res);
		app.toast('提交订单失败');
		$(dom).prop('disabled', false);
	})
	.done(function (res) {
		plus.nativeUI.closeWaiting();
		app.log('提交订单结果：', res);
		$(dom).prop('disabled', false);
		
		if (500 == res.code) { app.toast('你还未登录'); return; }
		if (300 == res.code) { app.toast(res.msg); return; }
		if (200 != res.code) { app.toast('请求失败'); return; }
		if (res.msg) { app.toast(res.msg); }
		
		try { plus.webview.getWebviewById('cart.html').evalJS('cart.refresh()'); } catch (e) {}
		
		if (res.data && true === res.data.isOrderFinish) {
			// 如果优惠卷金额大于商品金额，订单直接完成
			app.open('checkout.success.html', {'order_id':res.data.order_id});
		} else {
			app.open('checkout.payway.html', {'order_id':res.data.order_id});
		}
		
		view.hide();
		setTimeout(function () { view.close(); }, 800);
	})
	;
});

})(mui, $);
